'''
2)滑动条操作
cv2.createTrackbar (
创建滑动条并指定回调函数，createlrackbar()原型如下:
CV_EXPORTS int createTrackbar(const string& trackbarname, const string& winname,
int* value, int count,
TrackbarCallback onChange = 0,void*userdata= 0);
trackbarname-----滚动条名称
winname-----滚动条所依附的窗口名称(namedWindow创建)value----指向型指针，表示滑动块位置
count---滑动块最大位置，默认最小为0
onChange----指向回调函数的指针，原型必须为void xxx(int, void*);userdata. -----用户传给回调函数的数据，默认值0
CV EXPORTS_ W int getTrackbarPos(const string& trackbarname, const string& winname);
'''
import cv2 as cv
def OnThreshold(minThres):  #滑动条回调函数
    global img,thres_img    #全局变量
    ret,thres_img = cv.threshold(img,minThres,255,cv.THRESH_BINARY)#二值化

img =cv.imread('C:\\Users\\asus\\Pictures\\Camera Roll\\timg.jpg',0)#灰度模式加载
thres_img =img.copy()#图像赋值
cv.namedWindow('image')#创建窗口
cv.createTrackbar('threshold','image',100,255,OnThreshold)#滑动条：threshold,窗口名，滑动条的下限，上限，函数名
OnThreshold(100)#初始调用
while True:
    cv.imshow('image',thres_img)
    k=cv.waitKey(1) &0xFF
    if k==27:
        break
cv.destroyAllWindows()
